Cosmetic improvements to the filebrowser demo
authorMatthias Clasen <mclasen@redhat.com>
Tue, 2 Jun 2020 03:12:01 +0000 (23:12 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 2 Jun 2020 03:13:20 +0000 (23:13 -0400)
Make it look good.

demos/gtk-demo/demo.gresource.xml
demos/gtk-demo/listview_filebrowser.c
demos/gtk-demo/listview_filebrowser.css [new file with mode: 0644]
demos/gtk-demo/listview_filebrowser.ui

index 8753b078ba6d91de3cc445fa1015242cf41732fc..d274e67024c8b9eaf6d894e9eecd899316250a31 100644 (file)
   </gresource>
   <gresource prefix="/listview_filebrowser">
     <file>listview_filebrowser.ui</file>
+    <file>listview_filebrowser.css</file>
   </gresource>
   <gresource prefix="/listview_minesweeper">
     <file>listview_minesweeper.ui</file>
index 8483ec35ffd31a9382c97fc524e18d27d60a184a..7dcf3e3d3f42b02e6d1a692629f447f7cb13ec9d 100644 (file)
@@ -18,6 +18,7 @@ struct _FileBrowserView
 
   GtkListItemFactory *factory;
   char *icon_name;
+  char *title;
   GtkOrientation orientation;
 };
 
@@ -25,6 +26,7 @@ enum {
   PROP_0,
   PROP_FACTORY,
   PROP_ICON_NAME,
+  PROP_TITLE,
   PROP_ORIENTATION,
 
   N_PROPS
@@ -54,6 +56,10 @@ file_browser_view_get_property (GObject    *object,
       g_value_set_string (value, self->icon_name);
       break;
 
+    case PROP_TITLE:
+      g_value_set_string (value, self->title);
+      break;
+
     case PROP_ORIENTATION:
       g_value_set_enum (value, self->orientation);
       break;
@@ -83,6 +89,11 @@ file_browser_view_set_property (GObject      *object,
       self->icon_name = g_value_dup_string (value);
       break;
 
+    case PROP_TITLE:
+      g_free (self->title);
+      self->title = g_value_dup_string (value);
+      break;
+
     case PROP_ORIENTATION:
       self->orientation = g_value_get_enum (value);
       break;
@@ -100,6 +111,7 @@ file_browser_view_finalize (GObject *object)
 
   g_object_unref (self->factory);
   g_free (self->icon_name);
+  g_free (self->title);
 
   G_OBJECT_CLASS (file_browser_view_parent_class)->dispose (object);
 }
@@ -125,6 +137,12 @@ file_browser_view_class_init (FileBrowserViewClass *klass)
                          "icon to display for selecting this view",
                          NULL,
                          G_PARAM_READWRITE);
+  properties[PROP_TITLE] =
+    g_param_spec_string ("title",
+                         "title",
+                         "title to display for selecting this view",
+                         NULL,
+                         G_PARAM_READWRITE);
   properties[PROP_ORIENTATION] =
     g_param_spec_enum ("orientation",
                        "orientation",
@@ -224,6 +242,14 @@ do_listview_filebrowser (GtkWidget *do_widget)
       GtkDirectoryList *dirlist;
       GFile *file;
       char *cwd;
+      GtkCssProvider *provider;
+
+      provider = gtk_css_provider_new ();
+      gtk_css_provider_load_from_resource (provider, "/listview_filebrowser/listview_filebrowser.css");
+      gtk_style_context_add_provider_for_display (gdk_display_get_default (),
+                                                  GTK_STYLE_PROVIDER (provider),
+                                                  800);
+      g_object_unref (provider);
 
       builder = gtk_builder_new_from_resource ("/listview_filebrowser/listview_filebrowser.ui");
       window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
diff --git a/demos/gtk-demo/listview_filebrowser.css b/demos/gtk-demo/listview_filebrowser.css
new file mode 100644 (file)
index 0000000..c27fadf
--- /dev/null
@@ -0,0 +1,11 @@
+list.viewswitcher {
+  border: 1px solid gray;
+}
+
+list.viewswitcher > row {
+  padding: 5px;
+}
+
+list.viewswitcher row:selected {
+  background: gray;
+}
index 126c1baa02834258917879e73400190b26b3c950..7d5d4ce5cde6a02e408f63015671a7e8c55204c1 100644 (file)
           </object>
         </property>
         <property name="icon-name">view-list-symbolic</property>
+        <property name="title" translatable="yes">List</property>
         <property name="orientation">horizontal</property>
       </object>
     </child>
     <child>
       <object class="FileBrowserView">
         <property name="icon-name">view-grid-symbolic</property>
+        <property name="title" translatable="yes">Grid</property>
         <property name="factory">
           <object class="GtkBuilderListItemFactory">
             <property name="bytes"><![CDATA[
@@ -92,6 +94,7 @@
     <child>
       <object class="FileBrowserView">
         <property name="icon-name">view-paged-symbolic</property>
+        <property name="title" translatable="yes">Paged</property>
         <property name="factory">
           <object class="GtkBuilderListItemFactory">
             <property name="bytes"><![CDATA[
         <property name="show-title-buttons">1</property>
         <child>
           <object class="GtkButton">
-            <property name="icon-name">go-up</property>
+            <property name="icon-name">go-up-symbolic</property>
             <signal name="clicked" handler="filebrowser_up_clicked_cb" object="dirlist" swapped="no"/>
           </object>
         </child>
             <property name="orientation">horizontal</property>
             <style>
               <class name="linked"/>
+              <class name="viewswitcher"/>
             </style>
             <property name="model">
               <object class="GtkSingleSelection" id="selected-view">
             <lookup name="item">GtkListItem</lookup>
           </lookup>
         </binding>
+        <binding name="tooltip-text">
+          <lookup type="FileBrowserView" name="title">
+            <lookup name="item">GtkListItem</lookup>
+          </lookup>
+        </binding>
       </object>
     </property>
   </template>